#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 计算字符串长度
int my_strlen(const char *s)
{
    int len = 0;

    while (*s != '\0')
    {
        s++;
        len++;
    }

    return len;
}

// 字符串拷贝
char *my_strcpy(char *dest, const char *src)
{
    size_t i;

    for (i = 0; src[i] != '\0'; i++)
    {
        dest[i] = src[i];
    }

    // 方法二
    //  char *p=dest;
    //  const char *q=src;

    // while (*p++ = *q++);

    return dest;
}

// 字符串拷贝
char *my_strncpy(char *dest, const char *src, size_t n)
{
    size_t i;

    for (i = 0; i < n && src[i] != '\0'; i++)
    {
        dest[i] = src[i];
    }
    dest[i] = '\0';

    return dest;
}

// 字符串比较
int *my_strcmp(const char *s1, const char *s2)
{
    int i;
    for (i = 0; s1[i] != '\0' && s2[i] != '\0'; i++)
    {
        if (s1[i] > s2[i])
        {
            printf("前者大");
            return 1;
        }
        if (s1[i] < s2[i])
        {
            printf("后者大");
            return -1;
        }
    }

    if (s1[i] == '\0')
    {
        printf("后者大");
        return -1;
    }

    if (s2[i] == '\0')
    {
        printf("前者大");
        return 1;
    }

    if (s1[i] == s2[i])
    {
        printf("两者一样大");
        return 0;
    }
}

// 字符串拼接
char *my_strcat(char *dest, const char *src)
{
    int dest_len = strlen(dest);
    int i;

    for (i = 0; src[i] != '\0'; i++)
    {
        dest[dest_len + i] = src[i];
    }

    dest[dest_len + i] = '\0';

    return dest;
}

// 字符串拼接
char *my_strncat(char *dest, const char *src, size_t n)
{
    int dest_len = strlen(dest);
    int i;

    for (i = 0; src[i] != '\0' && i < n; i++)
    {
        dest[dest_len+i] = src[i];
    }

    dest[dest_len+i] = '\0';

    return  dest;
}
